[broadway] Don't have mouse_in_toplevel point to hidden or destroyed window
authorAlexander Larsson <alexl@redhat.com>
Thu, 25 Nov 2010 19:07:26 +0000 (20:07 +0100)
committerAlexander Larsson <alexl@redhat.com>
Thu, 25 Nov 2010 21:09:33 +0000 (22:09 +0100)
gdk/broadway/gdkwindow-broadway.c

index 818ffacae930076ac997a3ca02ef1c36ecc806a8..eb9c4094fcb62a0a99bfde98be3f32c401bcbe95 100644 (file)
@@ -266,6 +266,13 @@ gdk_window_impl_broadway_finalize (GObject *object)
   wrapper = (GdkWindowObject*) draw_impl->wrapper;
 
   display_broadway = GDK_DISPLAY_BROADWAY (gdk_window_get_display (draw_impl->wrapper));
+
+  if (display_broadway->mouse_in_toplevel == GDK_WINDOW (wrapper))
+    {
+      /* TODO: Send leave + enter event, update cursors, etc */
+      display_broadway->mouse_in_toplevel = NULL;
+    }
+
   g_hash_table_remove (display_broadway->id_ht, GINT_TO_POINTER(window_impl->id));
 
   if (window_impl->cursor)
@@ -495,6 +502,12 @@ gdk_window_broadway_hide (GdkWindow *window)
       queue_dirty_flush (display_broadway);
     }
 
+  if (display_broadway->mouse_in_toplevel == window)
+    {
+      /* TODO: Send leave + enter event, update cursors, etc */
+      display_broadway->mouse_in_toplevel = NULL;
+    }
+
   _gdk_window_clear_update_area (window);
 }